/*
 * @Author: 张昊
 * @Date:  2022-04-20 14:43:51
 * @FilePath: /common/mixin/onReachBottoms.js
 * @Description: 具有tab的下拉请求混入
 */


// 全局字体控制

export default {

	data() {
		return {
			// 加载页
			MixedLoading: true,
			clickTab: null,
			// 导航轴
			// showView: 0,
			loadFlag: false
		}
	},
	methods: {
		// 点击切换导航栏
		async clickTabs(item) {
			console.log('全部数据', this.ReachBottom);
			uni.showLoading({
				title: '数据加载中'
			});
			this.MixedLoading = true
			// 重置
			this.ReachBottom.forEach((e, i) => {
				this.ToNull(i)
			});
			this.$store.commit('VuexshowView/$IsShowView', item.index)
			await uni.$u.throttle(this.req, 500)
		},
		/**
			* @description: 开始加载页面时,没有触底情况 下方提示处理器
			* @param {*
				itemList, 	列表数据
				total,		列表数据应该的总数
				}
			* @return: {*
				flag ==> pullDown  最下面的数据是否还会有的提示
			}
			* @author: 张昊
			*/
		UsePullDown(itemList, total) {
			if (itemList.length == 0) {
				// 没有数据
				return '显示无数据图';
			} else if (itemList.length > 0 && itemList.length < total) {
				// 有数据显示加载中
				return true;
			} else if (itemList.length > 0 && itemList.length >= total) {
				return false;
			}
		},
		/**
		* @description: 触底刷新时 提示处理器
		* @param {*
			itemList, 	列表数据
			total,		列表数据应该的总数
			pageNumber	列表页码
		}
		* @return: {*
			flag ==> pullDown  最下面的数据是否还会有的提示
		* }
		* @author: 张昊
		*/
		UseReachBottom(itemList, total, pageNumber = 1) {
			// 当数据还没加载完时
			if (total > itemList.length) {
				pageNumber++;
				return {
					pageNumber,
					flagPull: true
				};
			} // 当没有数据时
			else if (itemList.length == 0) {
				// 没有数据
				return {
					pageNumber,
					flagPull: '显示无数据图'
				};
			} // 没有更多数据了
			else {
				uni.$u.toast('没有更多数据了');
				return {
					pageNumber,
					flagPull: false
				};
			}
		},
		FunReachBottom() {
			const index = this.showView;
			// 多格类刷新
			const info = [this.ReachBottom[index].uniqueDetailsItems, this.ReachBottom[index].total, this.ReachBottom[
					index]
				.num
			];
			const {
				pageNumber,
				flagPull
			} = this.UseReachBottom(...info);
			this.ReachBottom[index].num = pageNumber;
			this.ReachBottom[index].flagPull = flagPull;
			if (flagPull === true) {
				this['reqPaging' + (index + 1)]()
			}
			// 自动启动无触底情况预案
			// if (this.ReachBottom[this.showView].num < 3) {
			// 	this.FunReachBottom()
			// }
		},
		// 重置
		ToNull(index) {
			this.ReachBottom[index].uniqueDetailsItems = [];
			this.ReachBottom[index].num = 1;
			this.ReachBottom[index].params = null;
			this.ReachBottom[index].flagPull = true;
			this.ReachBottom[index].total = 0;
			this.ReachBottom[index].code = null;
			if (this.ReachBottom[index].value === null) {
				this.ReachBottom[index].value = ''
			} else {
				this.ReachBottom[index].value = null
			}
		},
		async req() {
			// 重置
			this.ReachBottom.forEach((e, i) => {
				this.ToNull(i)
			});
			// 请求
			console.log('reqPaging1',this.reqPaging1)
			await this['reqPaging' + (this.showView + 1)]()
			// 自动启动无触底情况预案
			// if (this.ReachBottom[this.showView].num < 3) {
			// 	await this.FunReachBottom()
			// }
			this.MixedLoading = false
			uni.hideLoading();

		}
	},
	computed: {
		showView() {
			return this.$store.state.VuexshowView.vuex_ShowView;
		}
	},
	async onLoad() {
		this.$store.commit('VuexshowView/$IsShowViewResetting')
		if (!this.loadFlag && this.ReachBottom[this.showView].uniqueDetailsItems.length === 0) {
			await this.req()
		}
	},
	async onShow() {

	},
	onHide() {
		// 重置
		// this.ReachBottom.forEach((e, i) => {
		// 	this.ToNull(i)
		// });
	},
	// 触底生命周期
	onReachBottom() {
		this.FunReachBottom()
	},
	async onPullDownRefresh() {
		this.ToNull(this.showView)
		await this['reqPaging' + (this.showView + 1)]()
		uni.stopPullDownRefresh()
	}

};
